// axios二次封装
// 导入axios
import axios from 'axios'

// 导入Toast组件，轻提示
import { Toast } from 'vant'

// 实例化axios实例对象
var service = axios.create({
    timeout: 10 * 1000,//设置请求超时时间
    baseURL: '/api',//请求地址的基准路径
})

// 设置请求拦截器
service.interceptors.request.use(
    (config) => {//请求发出前会立即自动执行的回调函数
        // 统一设置请求头
        config.headers['Authorization'] = 'Bearer' + ' ' + localStorage.getItem('token');
        // 显示loading;   duration: 将所有 Toast 的展示时长设置为 0 毫秒
        Toast.loading({ message: 'loading...', duration: 0 })
        return config;
    },
    (error) => {//请求发出前，发生错误的回调函数
        return Promise.reject(error);
    },
)


// 设置响应拦截器
service.interceptors.response.use(
    (res) => {//请求从服务器返回前会立即自动执行的回调函数
        Toast.clear(); //隐藏loading
        return res;
    },
    (error) => {//请求从服务器返回前，发生错误的回调函数
        // error是响应错误的对象
        Toast.clear(); //隐藏loading
        if (error.response.status == 401) {
            Toast.fail({ message: "身份认证失败,登陆过期,请重新登录!" })
        }
        else if (error.response.status == 404) {
            Toast.fail({ message: "访问路径有误!" })
        }
        else if (error.response.status == 500) {
            Toast.fail({ message: "服务器内部错误!" })
        }
        return Promise.reject(error);
    },
)


// 抛出axios实例对象
export default service;
